package org.example;

import org.apache.commons.lang3.SystemUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.util.Date;
import java.util.Calendar;

/**
 * 实验任务2：Apache Commons Lang3工具类使用
 * 学生姓名：易信志
 * 学号：202411671429
 * 生日：2006/04/25
 * 
 * 根据学号末尾29（>20），使用SystemUtils和DateFormatUtils类
 */
public class Task2 {
    public static void main(String[] args) {
        System.out.println("=== 实验任务2：Apache Commons Lang3工具类使用 ===");
        System.out.println("学生姓名：易信志");
        System.out.println("学号：202411671429");
        System.out.println("生日：2006/04/25");
        System.out.println();

        // 个人信息数据
        String studentName = "易信志";
        String studentId = "202411671429";
        String birthday = "2006/04/25";

        System.out.println("=== 功能1：SystemUtils.getUserHome() - 获取用户主目录 ===");
        // 功能：获取当前用户的主目录路径
        // 参数：无
        // 返回值：String - 用户主目录的绝对路径
        String userHome = SystemUtils.getUserHome().getAbsolutePath();
        System.out.println("用户主目录路径: " + userHome);
        System.out.println("学生" + studentName + "的主目录信息已获取");
        System.out.println();

        System.out.println("=== 功能2：DateFormatUtils.format() - 格式化日期 ===");
        // 功能：将日期对象格式化为指定格式的字符串
        // 参数1：Date date - 要格式化的日期对象
        // 参数2：String pattern - 日期格式模式
        // 返回值：String - 格式化后的日期字符串

        // 创建学生生日日期对象
        Calendar calendar = Calendar.getInstance();
        calendar.set(2006, 3, 25); // 注意：月份从0开始，所以4月是3
        Date birthdayDate = calendar.getTime();

        // 使用DateFormatUtils格式化生日
        String formattedBirthday1 = DateFormatUtils.format(birthdayDate, "yyyy-MM-dd");
        String formattedBirthday2 = DateFormatUtils.format(birthdayDate, "yyyy年MM月dd日");
        String formattedBirthday3 = DateFormatUtils.format(birthdayDate, "EEEE, MMMM dd, yyyy");

        System.out.println("学生" + studentName + "的生日格式化结果：");
        System.out.println("格式1 (yyyy-MM-dd): " + formattedBirthday1);
        System.out.println("格式2 (yyyy年MM月dd日): " + formattedBirthday2);
        System.out.println("格式3 (EEEE, MMMM dd, yyyy): " + formattedBirthday3);
        System.out.println();

        System.out.println("=== 功能3：SystemUtils.getJavaHome() - 获取Java安装目录 ===");
        // 功能：获取Java运行环境的安装目录
        // 参数：无
        // 返回值：File - Java安装目录的File对象
        String javaHome = SystemUtils.getJavaHome().getAbsolutePath();
        System.out.println("Java安装目录: " + javaHome);
        System.out.println("学生" + studentName + "的Java环境信息已获取");
        System.out.println();

        System.out.println("=== 功能4：SystemUtils.getHostName() - 获取主机名 ===");
        // 功能：获取当前计算机的主机名
        // 参数：无
        // 返回值：String - 主机名字符串
        String hostName = SystemUtils.getHostName();
        System.out.println("计算机主机名: " + hostName);
        System.out.println("学生" + studentName + "的计算机信息已获取");
        System.out.println();

        System.out.println("=== 功能5：DateFormatUtils.format() - 格式化当前时间 ===");
        // 功能：格式化当前系统时间
        // 参数1：Date date - 当前时间
        // 参数2：String pattern - 时间格式模式
        // 返回值：String - 格式化后的时间字符串
        Date currentTime = new Date();
        String currentTimeFormatted = DateFormatUtils.format(currentTime, "yyyy-MM-dd HH:mm:ss");
        String currentTimeChinese = DateFormatUtils.format(currentTime, "yyyy年MM月dd日 HH时mm分ss秒");

        System.out.println("当前时间格式化结果：");
        System.out.println("格式1 (yyyy-MM-dd HH:mm:ss): " + currentTimeFormatted);
        System.out.println("格式2 (yyyy年MM月dd日 HH时mm分ss秒): " + currentTimeChinese);
        System.out.println();

        // 输出所有处理结果汇总
        System.out.println("=== 所有处理结果汇总 ===");
        System.out.println("学生信息: " + studentName + " (" + studentId + ")");
        System.out.println("生日: " + birthday + " -> " + formattedBirthday2);
        System.out.println("用户主目录: " + userHome);
        System.out.println("Java安装目录: " + javaHome);
        System.out.println("计算机主机名: " + hostName);
        System.out.println("当前时间: " + currentTimeFormatted);

        System.out.println("\n=== 实验任务2完成 ===");
    }
}
